<?php
/**
 * Clase Base DP para BasePoProveedorDP
 *
 * @package
 * @subpackage BasePoProveedorDP
 * @author     hans
 * @version    SVN:: BasePoProveedorDP.class.php,v 1.1 2012-03-17 18:14:32 Hans.parra Exp $
 */
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/common/arrayClass.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/po/proveedores/BN/PoProveedorBN.class.php');

abstract class BasePoProveedorDP extends PoProveedorBN
{
  /* N�mero de registros afectados */
  private $nRowsAffected;

  public function __construct($bSetDefault = true)
  {
    if( $bSetDefault instanceof PoProveedorBN )
    {
      $o_PoProveedorBN = $bSetDefault;
      if($o_PoProveedorBN->getProveedorId()) : $this->setProveedorId($o_PoProveedorBN->getProveedorId()); endif;
      if($o_PoProveedorBN->getTipo()) : $this->setTipo($o_PoProveedorBN->getTipo()); endif;
      if($o_PoProveedorBN->getNombre()) : $this->setNombre($o_PoProveedorBN->getNombre()); endif;
      if($o_PoProveedorBN->getDocIdent()) : $this->setDocIdent($o_PoProveedorBN->getDocIdent()); endif;
      if($o_PoProveedorBN->getNacExt()) : $this->setNacExt($o_PoProveedorBN->getNacExt()); endif;
      if($o_PoProveedorBN->getDirecc1()) : $this->setDirecc1($o_PoProveedorBN->getDirecc1()); endif;
      if($o_PoProveedorBN->getDirecc2()) : $this->setDirecc2($o_PoProveedorBN->getDirecc2()); endif;
      if($o_PoProveedorBN->getCuidad()) : $this->setCuidad($o_PoProveedorBN->getCuidad()); endif;
      if($o_PoProveedorBN->getDireccestado()) : $this->setDireccestado($o_PoProveedorBN->getDireccestado()); endif;
      if($o_PoProveedorBN->getPais()) : $this->setPais($o_PoProveedorBN->getPais()); endif;
      if($o_PoProveedorBN->getTelefono()) : $this->setTelefono($o_PoProveedorBN->getTelefono()); endif;
      if($o_PoProveedorBN->getEmail()) : $this->setEmail($o_PoProveedorBN->getEmail()); endif;
      if($o_PoProveedorBN->getContacto()) : $this->setContacto($o_PoProveedorBN->getContacto()); endif;
      if($o_PoProveedorBN->getTerminosPago()) : $this->setTerminosPago($o_PoProveedorBN->getTerminosPago()); endif;
      if($o_PoProveedorBN->getPlazoDiasPago()) : $this->setPlazoDiasPago($o_PoProveedorBN->getPlazoDiasPago()); endif;
      if($o_PoProveedorBN->getHold()) : $this->setHold($o_PoProveedorBN->getHold()); endif;      
      if($o_PoProveedorBN->getCreditLimit()) : $this->setCreditLimit($o_PoProveedorBN->getCreditLimit()); endif;
      if($o_PoProveedorBN->getInicioFecha()) : $this->setInicioFecha($o_PoProveedorBN->getInicioFecha()); endif;
      if($o_PoProveedorBN->getEstado()) : $this->setEstado($o_PoProveedorBN->getEstado()); endif;
      if($o_PoProveedorBN->getCreaUsr()) : $this->setCreaUsr($o_PoProveedorBN->getCreaUsr()); endif;
      if($o_PoProveedorBN->getModifUser()) : $this->setModifUser($o_PoProveedorBN->getModifUser()); endif;
      if($o_PoProveedorBN->getModifFecha()) : $this->setModifFecha($o_PoProveedorBN->getModifFecha()); endif;
      if($o_PoProveedorBN->getCreaFecha()) : $this->setCreaFecha($o_PoProveedorBN->getCreaFecha()); endif;
    }
  }

  /* Obtiene el n�mero de registros afectados */
  public function getRowsAffected()
  {
    return $this->nRowsAffected;
  }

  public function save()
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
     
      $this->setProveedorId($this->getSecuencia());

      if($this->getProveedorId()){
        $a_Fields = array();

        if($this->getProveedorId()) : $a_Fields['prv_proveedorId'] = ($this->getProveedorId()); endif;
        if($this->getTipo()) : $a_Fields['prv_tipo'] = ($this->getTipo()); endif;
        if($this->getNombre()) : $a_Fields['prv_nombre'] = ($this->getNombre()); endif;
        if($this->getDocIdent()) : $a_Fields['prv_docIdent'] = ($this->getDocIdent()); endif;
        if($this->getNacExt()) : $a_Fields['prv_nacExt'] = ($this->getNacExt()); endif;
        if($this->getDirecc1()) : $a_Fields['prv_direcc1'] = ($this->getDirecc1()); endif;
        if($this->getDirecc2()) : $a_Fields['prv_direcc2'] = ($this->getDirecc2()); endif;
        if($this->getCuidad()) : $a_Fields['prv_ciudad'] = ($this->getCuidad()); endif;
        if($this->getDireccestado()) : $a_Fields['prv_direccEstado'] = ($this->getDireccestado()); endif;
        if($this->getPais()) : $a_Fields['prv_pais'] = ($this->getPais()); endif;
        if($this->getTelefono()) : $a_Fields['prv_telefono'] = ($this->getTelefono()); endif;
        if($this->getEmail()) : $a_Fields['prv_email'] = ($this->getEmail()); endif;
        if($this->getContacto()) : $a_Fields['prv_contacto'] = ($this->getContacto()); endif;
        if($this->getTerminosPago()) : $a_Fields['prv_terminosPago'] = ($this->getTerminosPago()); endif;
        if($this->getPlazoDiasPago()) : $a_Fields['prv_plazoDiasPago'] = ($this->getPlazoDiasPago()); endif;
        if($this->getHold()) : $a_Fields['prv_hold'] = ($this->getHold()); endif;        
        if($this->getCreditLimit()) : $a_Fields['prv_creditLimit'] = ($this->getCreditLimit()); endif;
        if($this->getInicioFecha()) : $a_Fields['prv_inicioFecha'] = ($this->getInicioFecha()); endif;
        if($this->getEstado()) : $a_Fields['prv_estado'] = ($this->getEstado()); endif;
        if($this->getCreaUsr()) : $a_Fields['prv_creaUsr'] = ($this->getCreaUsr()); endif;
        if($this->getModifUser()) : $a_Fields['prv_modifUser'] = ($this->getModifUser()); endif;
        if($this->getModifFecha()) : $a_Fields['prv_modifFecha'] = ($this->getModifFecha()); endif;
        if($this->getCreaFecha()) : $a_Fields['prv_creaFecha'] = ($this->getCreaFecha()); endif;

        $sStringField = arrayClass::implode_keys(',', $a_Fields);
        $sStringValue = "'".implode("','", $a_Fields)."'";

        $sql = "INSERT INTO po_proveedor (".$sStringField.") VALUES (".$sStringValue.");";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows();
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return $this->getProveedorId();
  }

  public function update()
  {
    try
    {
      if($this->getProveedorId())
      {
        $a_Fields = array();

        if($this->getProveedorId()) : $a_Fields['prv_proveedorId'] = ($this->getProveedorId()); endif;
        if($this->getTipo()) : $a_Fields['prv_tipo'] = ($this->getTipo()); endif;
        if($this->getNombre()) : $a_Fields['prv_nombre'] = ($this->getNombre()); endif;
        if($this->getDocIdent()) : $a_Fields['prv_docIdent'] = ($this->getDocIdent()); endif;
        if($this->getNacExt()) : $a_Fields['prv_nacExt'] = ($this->getNacExt()); endif;
        if($this->getDirecc1()) : $a_Fields['prv_direcc1'] = ($this->getDirecc1()); endif;
        if($this->getDirecc2()) : $a_Fields['prv_direcc2'] = ($this->getDirecc2()); endif;
        if($this->getCuidad()) : $a_Fields['prv_ciudad'] = ($this->getCuidad()); endif;
        if($this->getDireccestado()) : $a_Fields['prv_direccEstado'] = ($this->getDireccestado()); endif;
        if($this->getPais()) : $a_Fields['prv_pais'] = ($this->getPais()); endif;
        if($this->getTelefono()) : $a_Fields['prv_telefono'] = ($this->getTelefono()); endif;
        if($this->getEmail()) : $a_Fields['prv_email'] = ($this->getEmail()); endif;
        if($this->getContacto()) : $a_Fields['prv_contacto'] = ($this->getContacto()); endif;
        if($this->getTerminosPago()) : $a_Fields['prv_terminosPago'] = ($this->getTerminosPago()); endif;
        if($this->getPlazoDiasPago()) : $a_Fields['prv_plazoDiasPago'] = ($this->getPlazoDiasPago()); endif;
        if($this->getHold()) : $a_Fields['prv_hold'] = ($this->getHold()); endif;        
        if($this->getCreditLimit()) : $a_Fields['prv_creditLimit'] = ($this->getCreditLimit()); endif;
        if($this->getInicioFecha()) : $a_Fields['prv_inicioFecha'] = ($this->getInicioFecha()); endif;
        if($this->getEstado()) : $a_Fields['prv_estado'] = ($this->getEstado()); endif;
        if($this->getCreaUsr()) : $a_Fields['prv_creaUsr'] = ($this->getCreaUsr()); endif;
        if($this->getModifUser()) : $a_Fields['prv_modifUser'] = ($this->getModifUser()); endif;
        if($this->getModifFecha()) : $a_Fields['prv_modifFecha'] = ($this->getModifFecha()); endif;
        if($this->getCreaFecha()) : $a_Fields['prv_creaFecha'] = ($this->getCreaFecha()); endif;

        $sStringField = arrayClass::implode_key_value(',', $a_Fields);

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "UPDATE po_proveedor SET ".$sStringField." WHERE 1 AND prv_proveedorId='".$this->getProveedorId()."';";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows();
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function delete()
  {
    try
    {
      if($this->getProveedorId())
      {
        $a_Fields = array();

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "DELETE FROM po_proveedor WHERE 1 AND prv_proveedorId='".$this->getProveedorId()."' AND prv_tipo='".$this->getTipo()."' AND prv_nombre='".$this->getNombre()."' AND prv_docIdent='".$this->getDocIdent()."' AND prv_nacExt='".$this->getNacExt()."' AND prv_direcc1='".$this->getDirecc1()."' AND prv_direcc2='".$this->getDirecc2()."' AND prv_ciudad='".$this->getCuidad()."' AND prv_direccEstado='".$this->getDireccestado()."' AND prv_pais='".$this->getPais()."' AND prv_telefono='".$this->getTelefono()."' AND prv_email='".$this->getEmail()."' AND prv_contacto='".$this->getContacto()."' AND prv_terminosPago='".$this->getTerminosPago()."' AND prv_plazoDiasPago='".$this->getPlazoDiasPago()."' AND prv_inicioFecha='".$this->getInicioFecha()."' AND prv_estado='".$this->getEstado()."' AND prv_creaUsr='".$this->getCreaUsr()."' AND prv_modifUser='".$this->getModifUser()."' AND prv_modifFecha='".$this->getModifFecha()."' AND prv_creaFecha='".$this->getCreaFecha()."';";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  /* B�squeda del registro por la llave primaria */
  public static function selectByPK($vProveedorId, $vTipo, $vNombre, $vDocIdent, $vNacExt, $vDirecc1, $vDirecc2, $vCuidad, $vDireccestado, $vPais, $vTelefono, $vEmail, $vContacto, $vTerminosPago, $vPlazoDiasPago, $vInicioFecha, $vEstado, $vCreaUsr, $vModifUser, $vModifFecha, $vCreaFecha)
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT prv_proveedorId, prv_tipo, prv_nombre, prv_docIdent, prv_nacExt, prv_direcc1, prv_direcc2, prv_ciudad, prv_direccEstado, prv_pais, prv_telefono, prv_email, prv_contacto, prv_terminosPago, prv_plazoDiasPago, prv_inicioFecha, prv_estado, prv_creaUsr, prv_modifUser, prv_modifFecha, prv_creaFecha FROM po_proveedor WHERE 1 AND prv_proveedorId='".$vProveedorId."' AND prv_tipo='".$vTipo."' AND prv_nombre='".$vNombre."' AND prv_docIdent='".$vDocIdent."' AND prv_nacExt='".$vNacExt."' AND prv_direcc1='".$vDirecc1."' AND prv_direcc2='".$vDirecc2."' AND prv_ciudad='".$vCuidad."' AND prv_direccEstado='".$vDireccestado."' AND prv_pais='".$vPais."' AND prv_telefono='".$vTelefono."' AND prv_email='".$vEmail."' AND prv_contacto='".$vContacto."' AND prv_terminosPago='".$vTerminosPago."' AND prv_plazoDiasPago='".$vPlazoDiasPago."' AND prv_inicioFecha='".$vInicioFecha."' AND prv_estado='".$vEstado."' AND prv_creaUsr='".$vCreaUsr."' AND prv_modifUser='".$vModifUser."' AND prv_modifFecha='".$vModifFecha."' AND prv_creaFecha='".$vCreaFecha."'; ";
        $result = mysql_query($sql);
      $o_Propel = $result ? mysql_fetch_object($result) : null;

      return $o_Propel?self::insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con m�todos de acceso */
  private function insertObjectBN($o_propel){
    $o_PoProveedorDP = new PoProveedorBN();
    $o_PoProveedorDP->setProveedorId($o_propel->prv_proveedorId);
    $o_PoProveedorDP->setTipo($o_propel->prv_tipo);
    $o_PoProveedorDP->setNombre($o_propel->prv_nombre);
    $o_PoProveedorDP->setDocIdent($o_propel->prv_docIdent);
    $o_PoProveedorDP->setNacExt($o_propel->prv_nacExt);
    $o_PoProveedorDP->setDirecc1($o_propel->prv_direcc1);
    $o_PoProveedorDP->setDirecc2($o_propel->prv_direcc2);
    $o_PoProveedorDP->setCuidad($o_propel->prv_ciudad);
    $o_PoProveedorDP->setDireccestado($o_propel->prv_direccEstado);
    $o_PoProveedorDP->setPais($o_propel->prv_pais);
    $o_PoProveedorDP->setTelefono($o_propel->prv_telefono);
    $o_PoProveedorDP->setEmail($o_propel->prv_email);
    $o_PoProveedorDP->setContacto($o_propel->prv_contacto);
    $o_PoProveedorDP->setTerminosPago($o_propel->prv_terminosPago);
    $o_PoProveedorDP->setPlazoDiasPago($o_propel->prv_plazoDiasPago);
    $o_PoProveedorDP->setHold($o_propel->prv_hold);    
    $o_PoProveedorDP->setCreditLimit($o_propel->prv_creditLimit);
    $o_PoProveedorDP->setInicioFecha($o_propel->prv_inicioFecha);
    $o_PoProveedorDP->setEstado($o_propel->prv_estado);
    $o_PoProveedorDP->setCreaUsr($o_propel->prv_creaUsr);
    $o_PoProveedorDP->setModifUser($o_propel->prv_modifUser);
    $o_PoProveedorDP->setModifFecha($o_propel->prv_modifFecha);
    $o_PoProveedorDP->setCreaFecha($o_propel->prv_creaFecha);
    return $o_PoProveedorDP;
  }
}